1. Technical Field
This invention relates to the field of graphics systems and in particular to systems and methods for arbitrating between two and three dimensional graphics pipelines for access to graphics resources.
2. Background Art
Graphics capabilities are becoming increasingly important in modem computer systems. For example, most currently available operating systems communicate with computer users through graphical user interfaces (GUIs). In order to operate effectively, GUIs require a low latency path to graphics resources.
In addition to GUIs, computer systems must also support the graphics demands of game, drawing, video, and computer aided design/engineering (CAD/CAE) applications (hereafter, "applications") that run under the operating system. Until recently, the graphics generated by most popular applications were largely two dimensional ("2D") in nature, but increasingly, these applications are incorporating three dimensional ("3D") graphics features. Here, 2D graphics refers to substantially flat images that are generated through a series of processing steps known as a 2D pipeline. The 2D pipeline typically includes 2D scaling, block transfer and raster operations, as well as color blending and selection steps. These steps/operations are implemented by some combination of hardware and software. 3D graphics refers to images that are derived from three dimensional mathematics, and which are given a 3D appearance through, for example, lighting and texturing techniques. The series of processing steps used to generate 3D graphics form a 3D pipeline.
2D and 3D graphics place substantial demands on the resources of a computer system, and these systems often include graphics subsystems to perform some of the processing steps that would otherwise be performed by the central processor ("host processor"). The graphics subsystem and host processor of such systems must be coordinated to synchronize access to graphics resources. For example, a 2D pipeline generating GUI images for the operating system competes for graphics resources with 2D and 3D pipelines generating images for applications running under the operating system. Arbitration among these competing pipelines for access to graphics resources must accommodate the low latency requirements of the operating system and the high throughput requirements of the application graphics.
Synchronization is particularly complicated in preemptive, multi-threaded operating systems like Windows.TM. 95 and Windows.TM. NT from Microsoft.RTM. Corporation. These operating systems allow multiple execution threads from one or more programs, including the operating system, to run concurrently. Each thread can spawn a pipeline, and each pipeline can access the graphics subsystem through one of several application programming interfaces ("APIs"), depending on the resources it requires. Resource requirements are determined in part by whether a thread spawns a 2D or 3D pipeline, and the response time (maximum latency) required by the thread. With multiple pipelines accessing the graphics subsystem through multiple APIs, the demands placed on the graphics subsystem for rapid, seamless response without contention are substantially increased.
Conventional systems employ a variety of strategies to handle graphics data from different pipelines. In one strategy, the operating system implements a semaphore to limit access to the graphics subsystem to one pipeline at a time. Since graphics controllers may include different resources that could be used concurrently by pipelines at different processing stages, this strategy reduces the efficiency of the graphics controller. Another strategy employs separate controllers for 2D and 3D graphics pipelines. Semaphores are still necessary in these systems to regulate access to each controller by contending pipelines, and additional signals are required to prevent contention between concurrent 2D and 3D pipelines for graphics memory locations. None of these strategies guarantees a low latency channel to graphics resources for the operating system.
There is thus a need for a system and method for enhancing concurrent access to graphics resources and for coordinating these accesses to provide the low latency required for graphics pipelines spawned by the operating system.